#include "threadPool.h"

#define MAX_FD 1024      //每个fd集合的最大容量
#define QUEUE_SIZE 30    //一共30个集合

// 哈希表节点
typedef struct hash_node {
    int fd;                   // 文件描述符
    int slot_index;           // 所在槽位索引
    struct hash_node *next;   // 下一个节点
} hash_node_t;

// 哈希表结构
typedef struct {
    hash_node_t **buckets;    // 桶数组
    int size;                 // 桶数量
} hash_table_t;

// 自定义集合结构
typedef struct {
    int *fds;           // 动态数组存储文件描述符
    int count;          // 当前数量
    int capacity;       // 容量
} FdSet;

hash_table_t* hash_init(int size);
int hash_func(int fd, int size);
void hash_upsert(hash_table_t *ht, int fd, int slot_index);
int hash_get(hash_table_t *ht, int fd);
void hash_remove(hash_table_t *ht, int fd);


void fdset_init(FdSet *set, int capacity);
void fdset_add(FdSet *set, int fd);
void fdset_remove(FdSet *set, int fd);